///////////////////////////////////////////////////////////////////// // "On the torsion of rational elliptic curves over sextic fields" // // Harris B. Daniels and Enrique González-Jiménez // ///////////////////////////////////////////////////////////////////// // 2/8/2018 - Magma 2.23 // Magma script related to Proposition 8 (l) and Proposition 8 (n) // Split Cartan -- diagonal matrices in GL(2,Z/nZ) -- E admits two distinct rational n-isogenies if and only if \im\rho_{E,n} is conjugate ot a subgroup of the split Cartan function GL2SplitCartan(R) if Type(R) eq RngIntElt then R:=Integers(R); end if; M,pi:=MultiplicativeGroup(R); return sub; end function; // Borel group -- upper triangular matrices in GL(2,Z/nZ) -- E admits a rational n-isogeny if and only if \im\rho_{E,n} is conjugate to a subgroup of the Borel function GL2Borel(R) if Type(R) eq RngIntElt then R:=Integers(R); end if; return sub; end function; // Subgroup of Borel that fixes a point of order n function GL2Borel1(R) if Type(R) eq RngIntElt then R:=Integers(R); end if; M,pi:=MultiplicativeGroup(R); return sub; end function; // Checks whether H1 is conjugate to a subgroup of H2 in G function IsConjugateToSubgroup(G,H1,H2) if not IsDivisibleBy(#H2,#H1) then return false; end if; n:=#H2 div #H1; return #[H:H in Subgroups(H2:IndexEqual:=n)|IsConjugate(G,H`subgroup,H1)] ne 0; end function; // Compute the invariant factors of a finite Z/nZ-module of rank at most 2 (Magma apparently can't coerce Z/nZ-modules to abelian groups) function ModuleInvariants(V) if Dimension(V) eq 0 then return []; end if; if Dimension(V) eq 1 then return [#V]; end if; assert Dimension(V) le 2; r1:=#sub; r2:=#sub; return [GCD(r1,r2),LCM(r1,r2)]; end function; // Given a subgroup of GL(2,Z/nZ), computes the invariants of the sub-module of Z/nZ x Z/nZ fixed by G (returns a list [], [a], or [a,b] with a|b|n) function FixModule(H) V := Eigenspace(Identity(H),1); for h in Generators(H) do V:= V meet Eigenspace(Transpose(h),1); end for; // take transpose to work with right eigenspaces return ModuleInvariants(V); end function; // Returns if the Z/nZ-module A contains a submodule isomorphic to B (where A and B are specified by invariants). function ModuleContains(A,B) i:=#A-#B; if i lt 0 then return false; end if; for j in [1..#B] do if not IsDivisibleBy(A[i+j],B[j]) then return false; end if; end for; return true; end function; // Returns true of a matrix group over a ring R contains elements of every possible determinant function FullDeterminantMap(H) M,pi:=MultiplicativeGroup(BaseRing(H)); return sub eq M; end function; // Returns true if a give subgroup of GL(2,Z/nZ) contains an element corresponding to complex conjugation // Here we use the stronger criterion from Remark 3.5 of Sutherland's "Computing images of Galois representations attached to elliptic curves". function ContainsComplexConjugation(H) return #[h:h in H|Determinant(h) eq -1 and Trace(h) eq 0 and ModuleContains(FixModule(sub),[#BaseRing(H)])] gt 0; end function; // Given a subgroup G of GL2(Z/nZ), returns the least divisor m for which G is the full inverse image of its reduction mod m function GL2Level(G) if G eq GL(2,BaseRing(G)) then return 1; end if; return GCD([m:m in Divisors(#BaseRing(G)) | m gt 1 and Index(GL(2,Integers(m)),ChangeRing(G,Integers(m))) eq Index(GL(2,BaseRing(G)),G)]); end function; //Given a list of group return a list of the maximal elements. function MaximalGroups(S) I:=Sort([:i in [1..#S]]); indexes:={i[1]:i in I}; U:=[]; for n in indexes do if IsDivisibleBy(n,U[1][2]) then U[1][3][n] := [K`subgroup: K in Subgroups(U[1][1]:IndexEqual:=n div U[1][2])]; end if; end for; for i:=2 to #I do H:=S[I[i][2]]; Hn :=I[i][1]; keep := true; for j:=1 to #U do if IsDivisibleBy(Hn,U[j][2]) then for K in U[j][3][Hn] do assert #H eq #K; if IsConjugate(G9,H,K) then keep:= false; break; end if; end for; if not keep then break; end if; end if; end for; if keep then r:=; for n in indexes do if IsDivisibleBy(n,Hn) then r[3][n] := [K`subgroup:K in Subgroups(H:IndexEqual:=n div Hn)]; end if; end for; U:=Append(U,r); end if; end for; S:=[r[1]:r in U]; for i:= 1 to #S do m:=GL2Level(S[i]); if m gt 1 and m lt #BaseRing(S[i]) then S[i]:=ChangeRing(S[i],Integers(m)); end if; end for; return S; end function; G9 := GL(2,Integers(9)); G3,mp3 := ChangeRing(G9,Integers(3)); //Subgroups of G9 with full determinant, complex conjugation, and correspond to //curves with a point of order 3 over Q AdmisIms := [g`subgroup : g in Subgroups(G9) | ContainsComplexConjugation(g`subgroup) and FullDeterminantMap(g`subgroup) and IsConjugateToSubgroup(G3,mp3(g`subgroup),GL2Borel1(3))]; #AdmisIms eq 38; //Let S be the list of these groups that actually have a point of order 9 defined over a degree 3 extension. GalCloOfP := AssociativeArray(); for GG in AdmisIms do if not IsConjugateToSubgroup(G9,GG,GL2Borel1(9)) then V9:={ v : v in RSpace(GG) | not IsZero(v) and not &and[IsDivisibleBy(Eltseq(v)[1],3),IsDivisibleBy(Eltseq(v)[2],3)] }; names:={@ GroupName(quo) : v in V9 | Integers()!(Order(GG)/Order(Stabiliser(GG,v))) eq 6 @}; if #names ne 0 then for name in names do if name in Keys(GalCloOfP) then Append(~GalCloOfP[name],GG); else GalCloOfP[name] := [GG]; end if; end for; end if; end if; end for; assert Keys(GalCloOfP) eq { "C3*S3", "S3", "C6" }; /* Showing there are not elliptic curves with a 9-isogeny and square discriminant. */ //j9 is the j-map from X_0(9) to P1 taken from Zywina, On the possible images of the //mod l representations associated to elliptic curves over Q. F := FunctionField(Rationals()); j9 := t^3*(t^3-24)^3*(t^3-27)^-1; E := EllipticCurveFromjInvariant(j9); D := Discriminant(E); assert D eq (t - 3)*(t^2 + 3*t + 9)*(t)^6*(t^3 - 24)^6*(t^6 - 36*t^3 + 216)^-6; //Mod square Disc(E) = (t - 3)*(t^2 + 3*t + 9) = t^3-27 E := EllipticCurve([0,-27]); assert Rank(E) eq 0; assert #TorsionSubgroup(E) eq 2; //The two points on E are [3,0] and the point at infinity. Both correspond to cusps on X0(9). So there are no elliptic curves with a 9-isogeny and square discriminant.